1. Statement of the Technical Field
The present invention relates to server farm management and more particularly to the allocation of application cluster management in a server farm.
2. Description of the Related Art
Application server clusters (“application clusters”) have become common in the field of high-availability and high-performance computing. Application cluster-based systems exhibit three important and fundamental characteristics or properties: reliability, availability and serviceability. Each of these features are of paramount importance when designing the a robust clustered system. Generally, a clustered system consists of multiple application server instances grouped together in a server farm of one or more server computing nodes that are connected over high-speed network communicative linkages. Each application server process in the application cluster can enjoy access to memory, possibly disk space and the facilities of a host operating system.
Generally, each server computing node can host only a few application server instances. The application server instances themselves can operate in a request/response paradigm. Accordingly, request messages for a particular application necessary are split among multiple application server instances of the application cluster. Accordingly, an aspect to application cluster management can include the automatic instantiation of application server instances in one or more application clusters in the server farm to allow the server farm to dynamically adjust the number of application server instances as the load for the server farm fluctuates.
When distributed applications involve the use of different application servers, the size of an application cluster can directly impact the amount of load that the application cluster can sustain without performance degradation. In this regard, when the size of an application cluster is not sufficient to service an offered load, end users can experience performance degradation or failures which ultimately can result in the violation of a service level agreement (SLA). Today, to avoid SLA violations, application providers overprovision the number of application server instances disposed among application clusters to handle peak load. Notwithstanding, this strategy can produce poor resource utilization during normal operating conditions.
Dynamic allocation strategies can alleviate the problem of poor resource utilization by automatically reallocating application server instances servicing an application based upon a contemporaneously experienced load and the objectives of an SLA. Dynamic allocation techniques generally assign an application to operate within the confines of an application cluster. Correspondingly, application server instances can be reallocated among application clusters based upon an offered load. Still, dynamic allocation strategies are not without several limitations.
Specifically, when only a single application is assigned to an application cluster at any given time, the granularity of resource allocation can be course in nature and wasteful when the demands of an application are not sufficient to warrant the utilization of an entire application cluster. By comparison, when more than one application is assigned to an application cluster, all applications in the application cluster must execute concurrently. The concurrent operation of the applications, however, limits the number of applications assigned to the application cluster by the memory capacity of the smallest application server in the cluster.
Once again, wasted server capacity can result as an application must execute on all application servers in the application cluster even if the workload could be satisfied by a subset of the application servers in the application cluster. Typically, however, only a few applications execute in an application server at any time. Therefore, regardless of the number of application servers in the application cluster, only a few applications can be served by the application cluster.
Notably, in the process of application server re-allocation from one application to the next, an old, no longer desirous application first must be uninstalled from the application server. Subsequently, the application server must be reconfigured and, in many circumstances, the underlying network of application clusters also must be reconfigured. Only then can a new application be installed to the application server. This reconfiguration process can be time-consuming and therefore, cannot be performed frequently. Consequently, workload changes in a server farm can produce a lower than acceptable responsiveness and, once again, the terms of an SLA can become breached.